#ifndef __TK_MACROS_H__
#define __TK_MACROS_H__

////////////////////////////////////////////////////////////////////////////////
// Macros
////////////////////////////////////////////////////////////////////////////////

/// Min and max values
#define MIN(X,Y) (((X)<(Y))?(X):(Y))
#define MAX(X,Y) (((X)>(Y))?(X):(Y))

/// Bound a value between a lower and an upper bound
#define BOUND(X,LB,UB) X = ( ((X)<(LB)) ? (LB) : ( ((X)>(UB)) ? (UB) : (X) ) )

/// Absolute value
#define ABS(X) ( ((X)>0) ? (X) : (-(X)) )

/// Returns a random number in [0,1]
#define frand() ( ((double)rand()) / ((double)RAND_MAX) )

////////////////////////////////////////////////////////////////////////////////

#endif

